/*
 * @Author: your name
 * @Date: 2021-08-30 09:35:32
 * @LastEditTime: 2021-08-30 20:24:11
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \briup\5-javascript\day06\2-length.js
 */
var arr = [100, 200, 300, 400];
var arr = new Array(100, 200, 300, 400);
console.log(arr.length); //4 可读
arr.length = 6; //可写
console.log(arr, arr.length); //[ 100, 200, 300, 400, <2 empty items> ]  6
arr.length = 3; //可写 数组尾部数据的删除
console.log(arr, arr.length); //[100,200,300] 3
arr.length = 6;
console.log(arr); //[100,200,300,3 empty items]


//在尾部新增任意多个数据

//1.线性结构代码
var arr = [100, 200, 300, 400]; //length=4
arr[arr.length] = 500; //arr[4]=500;  arr.length=5
arr[arr.length] = 600; //arr[5]=500;  arr.length=6

//2.函数结构代码 实现代码的复用
function myAdd() {
    //内部实际参数的变量arguments
    //this 指代的是arr数组
    for (var key in arguments) {
        var value = arguments[key];
        this[this.length] = value; //照着24行代码看
    }
}
var arr4 = [100, 200];
//1.
myAdd.call(arr4, 300, 400, 500, 600);
console.log(arr4, arr4.length);

//反建立函数与对象的关系
//2.
myAdd.apply(arr4, [700, 800, 900]);
console.log(arr4, arr4.length);

//3.原型方法新增
console.log(Array.prototype); //arr4的父亲
console.log(Array.prototype.__proto__) //arr4父亲内部变量 属性访问
Array.prototype.myAdd = myAdd; //arr4父亲新增myAdd函数，arr4继承父亲的myAdd函数
console.log(Array.prototype);
arr4.myAdd('ab');
console.log(arr4);

//删除数组尾部数据，返回删除的单个数据
Array.prototype.myRm = function() {
    //this指代的是myRm前面的对象，谁调用了myRm,this就指代谁
    //max=this.length-1
    var value = this[this.length - 1];
    this.length--;
    return value;
}
console.log(arr4.myRm()); //删除的是最后一个 ab
console.log(arr4.myRm(), arr4.length); //删除现在的最后一个900 长度为8